package com.hex.ds.hdtp.core.app.data.contrast.service;

import com.hex.ds.hdtp.core.app.common.page.PageData;
import com.hex.ds.hdtp.core.app.common.page.dto.PageDto;
import com.hex.ds.hdtp.core.app.common.service.IBasicService;
import com.hex.ds.hdtp.core.app.data.contrast.dto.request.CrossDbContrastListRequestDto;
import com.hex.ds.hdtp.core.app.data.contrast.dto.request.CrossDbContrastTaskRequestDto;
import com.hex.ds.hdtp.core.app.data.contrast.dto.response.CrossDbContrastListResponseDto;
import org.springframework.core.io.ByteArrayResource;
import org.springframework.web.multipart.MultipartFile;

import java.util.List;
import java.util.Map;

/**
 * @Package: com.hex.ds.hdtp.core.app.data.contrast.service
 * @ClassName ICrossDbContrastListService
 * @Description: 跨库比对清单-业务接口
 * @Author: wz.li
 * @Date 2023/7/24 17:13
 * @Version v2.0.2
 **/
public interface ICrossDbContrastListService extends IBasicService<CrossDbContrastListRequestDto> {

    /*
     * @Method: batchRemoveById <br>
     * @Param: [pkIds] <br>
     * @Return: void <br>
     * @Description：跨库比对-批量删除<br>
     * @Author： wz.li<br>
     * @Date： 2023/7/24 19:39 <br>
     * @Version： V2.0.2<br>
     */
    void batchRemoveById(List<String> pkIds);

    /*
     * @Method: queryList <br>
     * @Param: [crossDbContrastListRequestDto] <br>
     * @Return: java.util.List<com.hex.ds.hdtp.core.app.data.contrast.dto.response.CrossDbContrastListResponseDto> <br>
     * @Description：不分页查询<br>
     * @Author： wz.li<br>
     * @Date： 2023/7/25 16:56 <br>
     * @Version： V2.0.2<br>
     */
    List<CrossDbContrastListResponseDto> queryList(CrossDbContrastListRequestDto crossDbContrastListRequestDto);

    /**
     * @param crossDbContrastListRequestDto
     * @param pageDto
     * @Method queryListResultByPage
     * @Param
     * @Return com.hex.ds.hdtp.core.app.common.page.PageData
     * @Description 分页查询清单返回值
     * @Author Wang zhihao
     * @Date 2023/8/4 14:26
     * @Version V1.0
     */
    PageData queryListResultByPage(CrossDbContrastListRequestDto crossDbContrastListRequestDto, PageDto pageDto);

    /**
     * @param pkId
     * @param crossDbContrastListRequestDtos
     * @Method addList
     * @Param
     * @Return void
     * @Description 新增跨库对比任务列表
     * @Author Wang zhihao
     * @Date 2023/8/6 21:52
     * @Version V1.0
     */
    void addList(String pkId, List<CrossDbContrastListRequestDto> crossDbContrastListRequestDtos);

    /**
     * @param crossDbContrastListRequestDtos
     * @Method batchModify
     * @Param
     * @Return void
     * @Description 批量更新任务列表
     * @Author Wang zhihao
     * @Date 2023/8/7 16:35
     * @Version V1.0
     */
    void batchModify(List<CrossDbContrastListRequestDto> crossDbContrastListRequestDtos);

    void motify(CrossDbContrastListRequestDto crossDbContrastListRequestDto);

    void modifyStatus(String pkId, String status);

    /**
     * @param taskPkId
     * @Method removeByTaskPkId
     * @Param
     * @Return void
     * @Description 根据任务主键删除
     * @Author Wang zhihao
     * @Date 2023/8/7 17:13
     * @Version V1.0
     */
    void removeByTaskPkId(String taskPkId);

    /**
     * @param crossDbContrastListRequestDto
     * @Method addWithBackId
     * @Param
     * @Return java.lang.String
     * @Description 新增并返回主键
     * @Author Wang zhihao
     * @Date 2023/8/16 17:42
     * @Version V1.0
     */
    String addWithBackId(CrossDbContrastListRequestDto crossDbContrastListRequestDto);

    /**
     * @Method exportExcel
     * @Param
     * @Param crossDbContrastListRequestDto
     * @Param pageDto
     * @Return java.lang.String
     * @Description 日志导出
     * @Author xin.zhao
     * @Date 2023/11/8 11:16
     * @Version V1.0
     */
    String exportExcel(CrossDbContrastListRequestDto crossDbContrastListRequestDto, PageDto pageDto);

    ByteArrayResource exportContrastList(List<String> pkIds);

    /**
     * 导入对比清单
     * @param file
     * @param contrastTask
     * @return
     */
    Map<String, Object> importContrastList(MultipartFile file, CrossDbContrastTaskRequestDto contrastTask);
}
